//有红绿灯，各自亮1S，2S,3S,如此往复
// 1、定时器(不得行)
// function fn() {
//     let yellow;
//     let green;
//     let red;

//     yellow = setTimeout(() => {
//         console.log('黄', Date.now() / 1000);
//     }, 0)

//     setTimeout(() => {
//         clearTimeout(yellow)
//         green = setTimeout(() => {
//             console.log('绿', Date.now() / 1000);
//         }, 0)
//     }, 1000)

//     setTimeout(() => {
//         clearTimeout(green)
//         red = setTimeout(() => {
//             console.log('红', Date.now() / 1000);
//         }, 0)
//     }, 3000)

//     setTimeout(() => {
//         clearTimeout(red)
//         fn()
//     }, 6000)
// }
// fn()


// 2、Promise
function timePromise(time) {
	return new Promise((resolve, reject) => {
		setTimeout(resolve, time)
	})
}
async function setColor(i, color) {
	console.log('设置颜色', color)
	await timePromise(i)
}
async function run() {
	// 这里用了while循环 递归也可以
	while (true) {
		await setColor(3000, 'red')
		await setColor(2000, 'green')
		await setColor(1000, 'yellow')
	}
}
run()

// 3、Promise
async function timer(curColor, delay) {
	return new Promise((resolve, reject) => {
		console.log(curColor);
		setTimeout(() => {
			resolve()
		}, delay)
	})
}
// async-await实现三个灯
async function lights() {
	await timer('red_light', 3000)
	await timer('green_light', 2000)
	await timer('yellow_light', 1000)
	await lights()
}
lights()
